Software defined networking (SDN) is one of the most indispensable parts of software defined data center (SDDC). In a traditional data center, networking devices such as switches, routers, etc., are physical entities and configuring these physical devices is somewhat obvious and straightforward. Network administrators need to first establish physical connectivity between these devices (e.g., by plugging cables between them) and then login and make the corresponding configurations.
SDN, on the other hand, provides an abstraction of physical networking infrastructure and gives birth to logical networking devices such as logical switches, logical routers, etc. Similar to physical networking devices, these logical devices provide functionalities that are close to physical ones and are transparent to virtual machines (VM) in the SDDC. Logical devices provide benefits that the physical devices could not furnish. For instance, logical devices could be linked with each other by just defining the topology configuration while physical devices need physical cables to be attached. Logical devices could be distributed entities while physical devices must be single entities. Since logical devices are software driven, distributed solutions are widely preferred and used by the SDN in the SDDC.
Distributed solutions, however, bring both benefits and difficulties. Taking a logical switch connected by VMs that are distributed on multiple physical hosts as an example, all these physical hosts should be aware of this logical switch in order to apply correct policies, make correct traffic encapsulation, establish correct connections, etc. Since VMs can migrate among hosts and VMs can disconnect from an existing logical switch and connect to another logical switch, it could be hard to determine which host should get configuration of this logical switch at runtime.
One simple idea for solving this problem may be pushing configuration of this logical switch to all hosts regardless of whether a host needs to know or not. This might be doable in theory but may not be feasible in practice. The reasons come from several aspects. First, there may be tens of thousands of logical switches in a SDDC, thus pushing configurations of all these logical entities to every host is a huge task and is time consuming. Second, configurations of these logical entities require large amount of memory. Therefore it is not feasible for every physical host to store all this duplicated information for data transportation. Configuring other logical devices such as logical routers and distributed firewalls also face similar challenges.